#ifndef __IR_NEC_H
#define __IR_NEC_H

#include <stdint.h>

// 红外数据结构体
typedef struct {
    uint16_t address;          // 地址码（16位，前两个字节）
    uint8_t address_inverse;   // 保留字段（不再使用）
    uint8_t command;           // 命令码
    uint8_t command_inverse;   // 命令反码
    uint8_t repeat;            // 重复标志（1表示重复帧）
    uint8_t valid;             // 数据有效标志（1表示有效）
} IR_NEC_DataTypedef;

// 初始化红外解码模块
void IR_NEC_Init(void);

// 处理红外下降沿中断（应在GPIO下降沿中断服务程序中调用）
void IR_NEC_ProcessEdge(void);

// 获取解码结果
// 返回值：1表示有有效数据，0表示无有效数据
// data：输出参数，用于存储解码结果
uint8_t IR_NEC_GetData(IR_NEC_DataTypedef *data);

// 处理解码后的红外数据
// 应在主循环或任务中定期调用
void IR_NEC_Handle(void);

#endif /* __IR_NEC_H */
    